草庐IT

Android FrameWork--SytemServer进程fork

全部标签

c++ - 如何像在 Process Explorer 中那样获取进程起始地址的 "name"?

好的,我正在编写一个应用程序,旨在枚举给定进程中的线程,就像ProcessExplorer所做的那样。我很清楚这可能会在不同的Windows版本之间中断,因为它依赖于“非官方”API,例如NtQuerySystemInformation,我对此非常满意。我已经有了获取给定线程基地址的代码。我现在想把它变成类似于进程资源管理器所做的事情,即“ntdll.dll!EtwDeliverDataBlock+0x453”。我实际上不需要函数名称或偏移量,只需要模块名称。我该怎么做? 最佳答案 如果您只需要模块名称,最简单的方法是使用EnumP

c# - 获取句柄并写入启动我们进程的控制台

我如何写入一些已经打开的控制台的标准输出?我用这段代码找到了我需要的控制台:IntPtrptr=GetForegroundWindow();intu;GetWindowThreadProcessId(ptr,outu);Processprocess=Process.GetProcessById(u);问题是如何得到这个进程的标准输出句柄指针(stdHandle)。然后我想要这样的东西:SafeFileHandlesafeFileHandle=newSafeFileHandle(stdHandle,true);FileStreamfileStream=newFileStream(safe

Windows:原子地暂停整个进程?

这个问题在这里已经有了答案:HowcanIfreezetheexecutionofaprogram?(4个答案)关闭2年前。使用Win32API只能使用SuspendThread()暂停单个线程,但不能在一次调用中暂停一个完整的进程。遍历进程线程并一次挂起它们不是一个好的选择,因为它可能会导致死锁和意外行为。这应该是在内核中使用DDK中的一个函数(我不记得它的名字)是可能的。如何将此功能公开给用户模式?有没有其他不进入内核的方法来实现这一点?SysInternals进程浏览器有一个暂停进程的选项。它是如何做到的?

c# - 如何判断进程是否具有图形界面?

我正在使用自动化来测试应用程序,但有时我想通过批处理文件启动应用程序。当我运行“process.WaitForInputIdle(100)”时出现错误:“WaitForInputIdle失败。这可能是因为进程没有图形界面。”如何判断进程是否有图形界面? 最佳答案 参见Environment.UserInteractive.这将确定进程是否有接口(interface),例如服务不是用户交互的。您还可以查看Process.MainWindowHandle它会告诉你是否有图形界面。这两项检查的组合应涵盖所有可能性。

C# 到 C++ 进程,WM_COPYDATA 传递带有字符串的结构

在c#程序中,我想使用WM_COPYDATA和SendMessage来与遗留的c++/cliMFC应用程序通信。我想传递一个包含字符串对象的托管结构。我可以找到与SendMessage一起使用的c++应用程序的句柄。我不知道的一点是如何在另一端编码和读取结构及其字符串。特别是因为它包含非blittables。大家觉得这可行吗?我会继续努力,但会感谢做过此类事情的人告诉我它是否行不通。这里有一些演示代码,如果它是一个c++/cli程序,它不难运行。但是,我希望它位于.Net类库中,以便可以轻松地重复使用。//Quickdemonstationcodeonly,notcorrectlyst

c# - 终止进程(Windows 8)问题

我大约一个月前安装了Windows8,但一直遇到进程挂起时我无法结束/终止它的问题。任务管理器和CMDTaskkill/f/PID####都不能完成这项工作,所以我想我会用C#编写自己的进程killer,看看会出现什么问题。在编写了一个小应用程序后,我意识到我并不像我想象的那么聪明——我仍然无法结束这个过程。起初我能够通过名称/PID找到进程:Processp=Process.GetProcessById(aPid)//orforeach(ProcesspinProcess.GetProcessesByName(aProcessName)..当我尝试以下操作时出现“访问被拒绝”异常:p

c# - MSMQ - 队列能否在队列进程重启/服务器重启后继续存在

MSMQ排队消息能否在服务/服务器重启后继续存在?我的意思是,如果队列有消息并且服务器要经历硬重启,那么消息在重启后是否仍然在队列中可用? 最佳答案 为此,您必须将消息标记为可恢复。默认情况下,MSMQ消息仅保存在内存中,但可恢复消息会备份到磁盘以启用可靠的MSMQ消息传递。usingSystem.Messaging;MessagerecoverableMessage=newMessage();recoverableMessage.Body="SampleRecoverableMessage";recoverableMessage.

c# - Application.Quit() 方法无法清除进程

我已经看到很多从Google搜索返回的关于此的帖子,但其中引用的解决方案都没有为我解决这个问题。所以,我想我自己试试。在这段代码之后:PowerPoint.ApplicationpowerPoint=newMicrosoft.Office.Interop.PowerPoint.Application();powerPoint.Visible=Office.MsoTriState.msoTrue;Microsoft.Office.Interop.PowerPoint.Presentationppt=null;entercodehere我可以发出ppt.Quit();命令和Powerpoi

c# - C# 中的 fork 概念

既然C#支持线程,有没有办法在C#中实现fork的概念?提前致谢.... 最佳答案 这更多是.NET/CLR的问题,而不是C#的问题。通常,这是底层操作系统的问题。Windows不支持类似fork()的生成新进程的语义。此外,fork()与多线程支持无关。fork()的语义涉及复制原始进程地址空间的内容。我认为这是一种过时的进程创建方法,在Windows世界中几乎没有任何空间,因为它涉及很多安全和操作系统架构问题。从.NET的角度来看,fork()的根本问题是复制和/或共享非托管资源(文件句柄、同步对象、窗口句柄(!)、等)在旧流程

c# - 处理 Windows 应用程序的结束进程

是否可以在同一Windows应用程序本身中捕获Windows应用程序的任务管理器结束进程?我正在使用C#2.0win应用程序,我想在结束进程发生时进行一些数据库处理(将数据库中的标志从“Y”更改为“N”)。 最佳答案 不,不可能Hook操作系统结束进程的决定。请注意,这不是由任务管理器完成的,结束进程是内核的责任。你需要在这里做两件事:将事件处理程序连接到告诉应用程序退出的普通用户界面消息。使用这些事件来持久保存数据、释放资源或干净地退出。酌情处理异常以捕获错误并在可能的情况下清理和保存数据。这里有Raymond博客的三个链接,解释